package cn.goodym.controller;

import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import cn.goodym.exception.CustomException;
import cn.goodym.po.CaseItem;
import cn.goodym.po.PagingVO;
import cn.goodym.service.CaseItemService;

/**
 * 测试项目管理
 * 
 * @author Administrator
 * 
 */
@Controller
@RequestMapping("/item")
public class CaseItemController {

	@Resource
	private CaseItemService caseItemService;

	/**
	 *  项目管理页面显示
	 * @param model
	 * @param page
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/showItem")
	public String showItem(Model model, Integer page) throws Exception {

		List<CaseItem> list = null;
		//页码对象
		PagingVO pagingVO = new PagingVO();
		// 设置总页数
		pagingVO.setTotalCount(caseItemService.getCount());
		if (page == null || page == 0) {
			pagingVO.setToPageNo(1);
			list = caseItemService.findByPaging(1);
		} else {
			pagingVO.setToPageNo(page);
			list = caseItemService.findByPaging(page);
		}
		model.addAttribute("caseItemList", list);
		model.addAttribute("pagingVO", pagingVO);

		return "item/showItem";

	}

	/**
	 *  添加用例信息
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value = "/addItem", method = { RequestMethod.GET })
	public String addItemUI(Model model) throws Exception {

		return "item/addItem";
	}

	/**
	 *  添加用例信息处理
	 * @param caseItem
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value = "/addItem", method = { RequestMethod.POST })
	public String addItem(CaseItem caseItem, Model model) throws Exception {
		Date date = new Date();
		caseItem.setCreateTime(date);
		Boolean result = caseItemService.save(caseItem);

		if (!result) {
			model.addAttribute("message", "添加失败");
			return "error";
		}
		return "redirect:/item/showItem";
	}

	/**
	 *  删除用例
	 * @param id
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/removeItem")
	public String removeItem(Integer id) throws Exception {
		if (id == null) {
			return "item/showItem";
		}
		caseItemService.removeById(id);

		return "redirect:/item/showItem";
	}

	/**
	 * 跳转到项目修改页面
	 * @param id
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value = "/editItem", method = { RequestMethod.GET })
	public String editItemUI(Integer id, Model model) throws Exception {
		if (id == null) {
			return "redirect:/item/showItem";
		}
		
		CaseItem caseItem = caseItemService.findById(id);
		if (caseItem == null) {
			throw new CustomException("未找到该用例");
		}
		
		model.addAttribute("caseItem", caseItem);
		return "item/editItem";
	}
	
	/**
	 * 修改测试项目
	 * @param caseItem
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value = "/editItem", method = { RequestMethod.POST })
	public String editItem(CaseItem caseItem) throws Exception {

		CaseItem item = caseItemService.findById(caseItem.getId());
		caseItem.setCreateTime(item.getCreateTime());
		Date date = new Date();
		caseItem.setUpdateTime(date);
		caseItemService.updateById(caseItem.getId(), caseItem);

		// 重定向
		return "redirect:/item/showItem";
	}
	
	
	 /**
	  * 搜索测试项目
	  * @param findByName
	  * @param model
	  * @return
	  * @throws Exception
	  */
    @RequestMapping(value = "/selectItem", method = {RequestMethod.POST})
    private String selectItem(String name, Model model) throws Exception {
    	
        List<CaseItem> caseItemList = caseItemService.findByName(name);

        model.addAttribute("caseItemList", caseItemList);
        return "item/showItem";
    }

}
